//
//  ViewController.m
//  05-UIScrollView
//
//  Created by 韩旭 on 16/7/20.
//  Copyright © 2016年 lanou. All rights reserved.
//

#import "ViewController.h"
#define WIDETH self.view.frame.size.width
#define HEIGHT self.view.frame.size.height
#define COLORAUTO [UIColor colorWithRed:(arc4random()%256/255.0) green:(arc4random()%256/255.0) blue:(arc4random()%256/255.0) alpha:1.0]
//宏定义命名两种方式
//宏嵌套
//宏就是代码的替换(预编译指令)
#define kScreenBounds [UIScreen mainScreen].bounds
// 一全部大写
// 二小写的k + 驼峰命名
#define kWidth kScreenBounds.size.width
#define kHeight kScreenBounds.size.height
@interface ViewController ()<UIScrollViewDelegate>

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = COLORAUTO;
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:kScreenBounds];
    //    内容的范围 1. 默认 CGSizeZero CGSizeMake（0，0）可以设置滚动范围contentSize
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    btn.frame = CGRectMake(0, 0, kScreenBounds.size.width - 20, 100);
    btn.center = CGPointMake(kWidth / 2, kHeight * 0.5);
    btn.backgroundColor = [UIColor redColor];
    //    scrollView.contentSize = CGSizeMake(1000, 1000);
    //    2 默认为 CGPointZero
    //    contentOffset 偏移量, 滚动的位置
    //    不设置contentSize，contentOffset也可以改变
    //    contentOffset 偏移量， 滚动的位置
    //    问题：
    //    改变按contentOffset， 实质上对scrollView的bounds进行修改
    NSLog(@"%@", NSStringFromCGRect(scrollView.frame));
    NSLog(@"%@", NSStringFromCGRect(scrollView.bounds));
    scrollView.contentOffset = CGPointMake(0, 500);
    NSLog(@"%@", NSStringFromCGRect(scrollView.frame));
    NSLog(@"%@", NSStringFromCGRect(scrollView.bounds));
    scrollView.backgroundColor = [UIColor cyanColor];
    //    3.contentInset
    //    加边距
    scrollView.contentInset = UIEdgeInsetsMake(0, 10, 10, 0);
    //    4.directionalLockEnabled
    //    锁定垂直或水平滚动(45度角, 锁会失效)
    //    5. bounces 回弹效果
    //    边缘弹动动画
    //    scrollView.bounces = NO;
    //    6. 垂直方向有回弹效果 (保证在没有垂直方向的回弹效果存在)
    scrollView.alwaysBounceVertical = YES;
    //    7. 竖直方向有回弹效果
    //    在没有水平方向的滚动范围, 保证水平方向的回弹效果存在
    //    8.pagingEnabled 按页滚动
    //    scrollView.pagingEnabled = YES;
    //    9.scrollEnabled 滚动视图能否滚动， 默认可以滚YES , NO (不可以滚动)
    //    10.是否显示垂直或水平的滚动指示器，默认是YES
    scrollView.showsHorizontalScrollIndicator = YES;
    scrollView.showsVerticalScrollIndicator = YES;
    //    scrollIndicaInsets 滚动指示器的边距
    //    scrollView.scrollIndicatorInsets = UIEdgeInsetsMake(100, 0, 0, 0);
    //    UIScrollViewIndicatorStyle
    //    12. 滚动指示器的颜色（深色背景 / 浅色背景）
    scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
    scrollView.scrollEnabled = YES;
    scrollView.alwaysBounceHorizontal = YES;
    scrollView.directionalLockEnabled = YES;
    //    相关用户操作
    //    是否正在减速
    //    scrollView.decelerating = NO;
    //    用户是否正在拖动
    //    scrollView.dragging = NO;
    //    判断用户有没有开始拖动
    //    scrollView.tracking = NO;
    //  14. 双击状态栏回到最开始的位置 滚动视图手势是否存在 默认为YES
    scrollView.scrollsToTop = YES;
    //    15. delegate 方法
    scrollView.delegate = self;
//    键盘消失模式
    scrollView.keyboardDismissMode = UIScrollViewKeyboardDismissModeNone;
//    测试 ：
    UITextField *field = [[UITextField alloc] initWithFrame:CGRectMake(10, 10, kWidth - 20, 220)];
    field.backgroundColor = [UIColor redColor];
    [scrollView addSubview:field];
    [self.view addSubview:scrollView];
    [scrollView addSubview:btn];
    
    
//    17.缩放系数
//    如果想进行视图缩放, 必须实现viewForZoomingInScrollView：
    
    scrollView.minimumZoomScale = 0.5;
    scrollView.maximumZoomScale = 2;
    
}
//滚动视图滚动, 就会执行
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
//    tracking 用户触摸
    if (scrollView.isDragging) {
        NSLog(@"正在拖动");
    }
//    dragging 用户开始滑动
     if (scrollView.dragging) {
        NSLog(@"自己滚");
    }
//    decelerating 用户触摸结束
    if (scrollView.decelerating) {
        NSLog(@"滚动");
    }
}
//与其想要缩放的子视图绑定， scrollView的contentSize会跟随这个子视图变化

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    return [scrollView.subviews firstObject];
}

//滚动视图滚动就会执行这个方法
//将要开始拖拽
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
    NSLog(@"a位又开始滚");
}
//已经结束拖拽
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
    NSLog(@"结束拖拽");
}
// 将要开始减速
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {
    NSLog(@"将要开始减速");
}
// 结束减速
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    NSLog(@"结束减速");
}

@end
